跳至主要內容
pptg

pptg

费大厨辣椒炒肉真是太好吃了!

ppNginx
nginx命令行工具 by Golang
youi
个人todo软件 by Flutter
ppMenu
个人Mac的便捷菜单栏 by Swift
ppBlog
个人主页
lookAtMe
悬浮提醒桌面小助手
pp宇宙
无聊画画
动手学深度学习

跟沐神学 吼吼吼,上学不跟沐神好好学,上班之后来换债了

原文里的conda,这里会换成uv,如果遇到问题再说吧,uv实在是太快了

1. 深度学习基础

1.1 环境安装

这里推荐是用GPU,我用的MAC,所以先用CPU顶一下,后面遇到需要GPU的地方再去租云GPU吧

# 新建项目
mkdir ml_learn
cd ml_learn

# uv初始化
uv init

# 添加环境
uv add jupyter
uv add torch
uv add pandas
uv add matplotlib
uv add d2l
uv add torchvision


# 下载D2L
curl https://zh-v2.d2l.ai/d2l-zh-2.0.0.zip -o d2l-zh.zip
unzip d2l-zh.zip && rm d2l-zh.zip

pptg大约 3 分钟
注意力机制 和 Transformer

1. 注意力机制

非参注意力池化层

Nadaraya-Watson核回归

https://www.bilibili.com/video/BV1xoW4zaEke/?spm_id_from=333.1387.favlist.content.click&vd_source=981e3c11cfc628a411ae06b92a0546e9

Q: 查询向量,当前Token关注什么 K: 键向量,当前Token能给其它Token提供什么信息 V: 值向量,这个词实际包含的信息内容


pptg小于 1 分钟
进程管理

1. 进程和线程

1.1 进程

代码经过编译后,会生成可执行文件。当执行这个可执行文件时,它会被加载到内存中,接着CPU会执行程序中的指令。这个运行中的程序,就称之为进程(Process)

在一个进程运行过程中,难免会去读磁盘、网络的IO,这个时间相对是比较长的。此时,CPU 不需要阻塞等待数据的返回,而是去执行另外的进程。当硬盘数据返回时,CPU 会收到个中断,于是 CPU 再继续运行这个进程。

1.1.1 进程的状态

进程不是一直运行的,一个进程至少具备五种基本状态,即创建状态、运行状态、就绪状态、阻塞状态、结束状态


pptg大约 6 分钟
大模型幻觉

1. 什么是大模型幻觉

大模型幻觉是指大型语言模型(LLMs)生成的内容与现实世界事实或用户输入不一致的现象。这种现象可以分为两大类:

  • 事实性幻觉:模型生成的内容与可验证的现实世界事实不一致。
  • 忠实性幻觉:模型生成的内容与用户的指令或上下文不一致。

2. 产生幻觉的原因

  • 训练数据问题
    • 数据质量低:数据中可能包含错误、噪声或矛盾信息,导致模型学习到不准确的模式
    • 数据覆盖不足:模型可能缺乏足够的上下文或领域知识, 导致在生成内容时出现不准确或不一致的情况
    • 数据时效性:模型无法回答最新事件的问题,因为训练数据可能已经过时
  • 模型架构问题
    • 架构缺陷:比如可能无法处理长距离的依赖关系
    • 训练目标不对齐:LLM的训练过程大多数是基于Next Token Prediction的方式进行预训练, 因此,它只能保证文本生成的流畅性,而无法辨别所遇到的信息是否真实或准确。
  • 推理问题:上下文质量差、不充分

pptg大约 1 分钟
python异步编程

1. 关键字 async、await

python中,asyncawait两个关键字用于定义异步操作。

  • async: 定义异步函数,表明该函数是协程,可以在其中使用await来等待其他异步操作完成。异步函数的执行不会阻塞事件循环,而是会立即返回一个协程对昂。
  • await: 用于在异步函数内等待其他协程执行完成/。遇到await时,事件循环会挂起当前的协程,并执行其它任务,直到协程完成后再恢复。

pptg大约 7 分钟
python 字典原理

1. Python字典

Python字典(dict)是一种可变容器模型,用于存储键值对(key-value)映射关系。它是Python中最重要、最常用的数据结构之一。

主要特性:

  • 无序性(Python 3.7+开始保持插入顺序)
  • 键必须是可哈希的不可变类型
  • 值可以是任意Python对象
  • 动态扩容,自动调整大小
  • 提供快速的查找、插入和删除操作

2. 实现原理

  • 计算哈希值:对键调用hash()函数得到哈希值
  • 计算索引:index = hash(key) & (mask),其中mask = table_size - 1
  • 处理冲突:使用开放定址法中的伪随机探测
  • 插入/查找:在计算的位置开始探测,直到找到空槽或匹配的键

pptg大约 3 分钟
如何写好提示词

1. Prompt 到底用 # 还是 <></>

目前的开源项目,存在两种主流的prompt标记符号。下面以两个自动优化提示词的项目为例子:

  • \#: prompt_optimizer
  • <>: coze_loop

个人感觉还是<>效果更好一点,可以明确的划定一个指令块的区间,只是可读性不太友好

2. 为什么LLM的对话模型分为system、user、assistant?


pptg大约 7 分钟
python GC

1. 垃圾回收机制

python的垃圾回收机制主要分为三大块:

  • 引用计数法: 最基本的回收方法
  • 标记清除法: 用于回收循环引用的部分
  • 分代回收法: 用于解决频繁扫描“标记清除列表”的性能问题

1.1 引用计数法

python通过引用计数器来进行垃圾回收。每个对象的基础结构里都维护了引用计数字段,如果他的引用数量是0,则会触发回收机制。

// 这是Python对象在C层面的基础结构
typedef struct _object {
    Py_ssize_t ob_refcnt;  // 引用计数
    PyTypeObject *ob_type; // 类型指针
    // ... 其他字段根据类型不同而变化
} PyObject;

pptg大约 4 分钟
python元类

1. 什么是元类

在python中,一切皆对象,包括类本身。元类是创建类对象的类。就像类是用来创建实例的模板一样,元类是创建类的模板。

class MyClass:
    pass

obj = MyClass()

print(f"实例的类型: {type(obj)}")        # <class '__main__.MyClass'>
print(f"类的类型: {type(MyClass)}")      # <class 'type'>
print(f"type的类型: {type(type)}")       # <class 'type'>

# 所以:
# 实例 obj 是 MyClass 类的对象
# 类 MyClass 是 type 类的对象
# 元类 type 是 type 类的对象(type是自身的实例)

pptg大约 4 分钟
python上下文管理器和with

1. 什么是上下文管理器

上下文管理器(Context Manager)是Python中用于管理资源(如文件、数据库连接、锁等)的对象,它定义了在进入和退出代码块时要执行的操作。上下文管理器通过实现 __enter__()__exit__() 方法来工作

2. with的作用

with语句提供了一种优雅的方式来管理资源,确保资源被正确初始化和清理,即使在发生异常的情况下也是如此。它的主要优势包括:

  • 自动资源管理:自动获取和释放资源
  • 异常安全:即使在with块内发生异常,清理代码也会被执行
  • 代码简洁:避免了冗长的try...finally
  • 可读性强:清晰地标出了资源的作用范围

pptg大约 3 分钟